package com.neighbor.neighborhooduser.utils;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;


public class PageUtils {

    /**
     * 将 List 转换为 IPage
     * @param list 原始数据列表
     * @param page 当前页码
     * @param pageSize 每页大小
     * @return IPage 对象
     */
    public static <T> IPage<T> listToPage(List<T> list, long page, long pageSize) {
        // 计算总记录数
        long total = list.size();

        // 计算总页数
        long pages = (total + pageSize - 1) / pageSize;

        // 确保页码在有效范围内
        if (page < 1) page = 1;
        if (page > pages && pages > 0) page = pages;

        // 计算起始索引
        long fromIndex = (page - 1) * pageSize;
        if (fromIndex >= total) {
            fromIndex = Math.max(0, total - pageSize);
        }

        // 计算结束索引
        long toIndex = Math.min(fromIndex + pageSize, total);

        // 创建分页对象
        Page<T> pageResult = new Page<>(page, pageSize, total);

        // 设置分页数据
        pageResult.setRecords(list.subList((int) fromIndex, (int) toIndex));

        return pageResult;
    }

    /**
     * 将 List 转换为 IPage（使用默认分页参数）
     * @param list 原始数据列表
     * @return IPage 对象
     */
    public static <T> IPage<T> listToPage(List<T> list) {
        return listToPage(list, 1, list.size());
    }
}